import socket


#  进程之间空间是相互独立的
# 方式一：共享内存  操作系统中有一个共享内存区域，能实现多进程之间的通信
# 方式二：消息队列  通过多进程的（corou 没听懂）来实现进程的通信
# 方式三：管道 分为半双工（单向）和全双工（双向）
# 方式四：socket通信  socket能实现进程间的通信和网络之间的通信

# 1. 创建socket
server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# 2. 绑定host和port端口
server.bind(('', 10000))
# 3. 监听
server.listen()
print('服务器已启动，等带连接')
# 4. 等待接受客户端的连接
# 如果等待多人连接时可以利用while进行判断
# 下面为等待一人，阻塞的方法,socket服务器都是被动的，等待连接
client,address = server.accept()
# address为元组
print('%s 已连接' % address[0])

# 5. 向客户端发送消息
client.send('您好，您已经连接上socket服务器'.encode('utf-8'))

# 6. 待着客户端发来消息，阻塞方法
msg = client.recv(4096)
print(address, '说：',msg.decode())

client.close()
server.close()